// pages/my/my-release-experience-report/index.js
const app = getApp()
const db = wx.cloud.database()
const form = db.collection('form')
Page({
   // 页面的初始数据
  data: {
    desc: '',       // 输入框输入内容
    time: '',
    type: '',
    pageType: '',
    patient_id: '',
    media: []
  },

  // 生命周期函数--监听页面加载
  onLoad: function (options) {
    this.setData({
      pageType: options.pageType,
      patient_id: options.id
    })
  },

  // 文字输入内容
  setDesc(event) {
    this.setData({
      desc: event.detail.value
    })
  },

  // 选择上传：图片-视频 选择框
  actioncnt: function () {
    var _this = this;
    wx.showActionSheet({
      itemList: ['图片', '视频'],
      success: function (res) {
        if (res.tapIndex == 0) {
          _this.chooseImage()
        }
        if (res.tapIndex == 1) {
          _this.chooseVideo()
        }
      },
      fail: function (res) {
        console.log(res.errMsg)
      }
    })
  },

  // 选择照片来源
  chooseImage: function () {
    var _this = this;
    // 获取图片或视频的数量
    let len = this.data.media.length;

    // 在本地选择需上传的图片
    wx.chooseImage({
      count: 9 - len, //图片和视频上传数量之和不超过9
      sizeType: ['original'], //原图
      sourceType: ['album', 'camera'], //可以指定来源是相册还是相机, 默认二者都有
      success: function (res) {
        wx.showToast({
          title: '正在上传...',
          icon: "loading",
          mask: true,
          duration: 1000
        })
        // 返回选定照片的本地文件路径列表,tempFilePaths可以作为img标签的scr属性显示图片
        var media_list = [] //加在media末尾的元素
        var img_list = res.tempFilePaths //新添图片路径数组
        for (var i = 0; i < img_list.length; i++) {
          media_list.push({
            url: img_list[i],
            type: "image"
          })
        }
        // 将新图片的数组添加到media尾部
        _this.setData({
          media: _this.data.media.concat(media_list)
        })
      },
      fail: function () {
        wx.showToast({
          title: '图片上传失败',
          icon: 'none'
        })
        return;
      }
    })
  },

  // 选择视频来源
  chooseVideo: function () {
    var _this = this;
    // 从本地选择视频
    wx.chooseVideo({
      success: function (res) {
        wx.showToast({
          title: '正在上传...',
          icon: "loading",
          mask: true,
          duration: 1000
        })
        // 将视频添加到media头部
        _this.setData({
          media: [{
            url: res.tempFilePath,
            type: "video"
          }].concat(_this.data.media)
        })

      }
    })
  },

  //预览图片或视频
  //参数res:res.currentTarget.dataset.index即为data-index指定内容
  previewMedia(res) {
    wx.previewMedia({
      sources: this.data.media,
      current: res.currentTarget.dataset.index
    })
  },

  //删除图片或视频
  //参数res:res.currentTarget.dataset.index即为data-index指定内容
  deleteMedia(res) {
    var _this = this;
    console.log(res.currentTarget.dataset.index)
    var index = res.currentTarget.dataset.index
    var temp_list = this.data.media
    wx.showModal({
      title: '提示',
      content: '确认要删除吗?',
      success: function (res) {
        if (res.confirm) {
          temp_list.splice(index, 1);
        } else if (res.cancel) {
          return
        }
        _this.setData({
          media: temp_list
        })
      }
    })
  },

  //函数submit为移植时需要更改的地方
  // 4、提交任务派发
  submit() {
    var _this = this
    var media = [] //存储云端图片或视频路径的数组
    wx.showLoading({
      title: '上传中...',
    })

    // 上传图片或视频到云端
    Promise.all(this.data.media.map((item) => {
        return wx.cloud.uploadFile({
          // 移植：可更改视频和图片上传云端的路径，此处默认为task文件夹，更改'task/'部分即可
          cloudPath: 'record/' + Date.now() + item.url.match(/\.[^.]+?$/)[0], // 文件名称 
          filePath: item.url,
        })
      }))
      .then(res => {
        //获取任务的media
        for (var i = 0; i < res.length; i++) {
          media.push({
            url: res[i].fileID,
            type: _this.data.media[i].type
          })
        }
        //更新media:将其中的url从本地路径变为云存储路径
        _this.setData({
          media:media
        })

        //移植：需要新增或更改记录的数据库操作
        var that = _this
        db.collection('form').add({
          data:{
            patient_id: that.data.patient_id,    //需要从上一个页面传回来
            form_time: new Date(),  
            form_desc: that.data.desc,
            form_media: that.data.media,
            form_type: that.data.pageType == "会诊" ? '表单':'医学影像'
          }
        })
          .then(res => {
            // 成功则显示成功
            //移植：上传成功提示信息，改变wx.showToast的title
            wx.hideLoading()
            wx.showToast({
              title: '添加成功',
              icon: 'success',
              duration: 800,
              success: function(){ // 返回上一页
                setTimeout(function(){
                  wx.navigateBack({ 
                    delta:1
                  })
                },500)
                
              }
            })
          })
      })
  },

  // 上传数据 目前后台视频限制最大100M, 以后如果视频太大可以选择视频的时候进行压缩
  uploadmessage: function(e) {
    var that = this
    if(this.data.desc != ''){
      form.add({
        data:{
          patient_id: this.data.patient_id,    //需要从上一个页面传回来
          form_time: new Date,
          form_desc: this.data.desc,
          form_type: this.data.pageType == "会诊" ? '表单':'医学影像'
        },
        success(){
          wx.showToast({
            title: '添加成功',
            success: function(){ // 返回上一页
              setTimeout(function(){
                wx.navigateBack({ 
                  delta:1
                })
              },500)
              
            }
          })
        }
      })
    }else{
      wx.showModal({
        title: '警告',
        content: '请先填入描述信息',
        showCancel: false,
        confirmText: '返回',
        success: function (res) {
          if (res.confirm) {
            console.log('用户点击了“返回”')
          }
        }
      })
    }
  },
})
